//package com.pearl.sharding.level.table.demo.config;
//
//import com.google.common.base.Strings;
//import lombok.Getter;
//import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
//
//import java.util.Properties;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
///**
// * @author lan
// * @date 2024/1/28
// */
//
//
///**
// * Data source meta data for Oracle.
// */
//@Getter
//public final class DMDataSourceMetaData2 implements DataSourceMetaData {
//
//    private static final int DEFAULT_PORT = 5236;
//    private final String hostName;
//    private final int port;
//    private final String catalog;
//    private final String schema;
////    private final Pattern pattern = Pattern.compile("jdbc:dm://([\\w\\-\\.]+):?([0-9]*)/([\\w\\-]+)", Pattern.CASE_INSENSITIVE);
//    private final Pattern pattern = Pattern.compile("jdbc:dm://([\\w\\-\\.]+):?([0-9]*)/?(\\w+=\\w+&?)*", Pattern.CASE_INSENSITIVE);
//
//
//    public DMDataSourceMetaData2(final String url) {
//        Matcher matcher = pattern.matcher(url);
//        if (!matcher.find()) {
////            throw new UnrecognizedDatabaseURLException(url, pattern.pattern());
//        }
//        hostName = matcher.group(1);
//        port = Strings.isNullOrEmpty(matcher.group(2)) ? DEFAULT_PORT : Integer.valueOf(matcher.group(2));
//        catalog = matcher.group(3);
//        schema = null;
//    }
//
//    public String getHostName() {
//        return this.hostName;
//    }
//
//    @Override
//    public String getHostname() {
//        return this.hostName;
//    }
//
//    public int getPort() {
//        return this.port;
//    }
//
//    public String getCatalog() {
//        return this.catalog;
//    }
//
//    public String getSchema() {
//        return this.schema;
//    }
//
//    @Override
//    public Properties getQueryProperties() {
//        return null;
//    }
//
//    @Override
//    public Properties getDefaultQueryProperties() {
//        return null;
//    }
//
//    public Pattern getPattern() {
//        return this.pattern;
//    }
//
//}
